package br.com.manutencao.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import br.com.manutencao.entities.Setor;
import br.com.manutencao.entities.TipoDefeito;
import br.com.manutencao.repositories.TipoDefeitoRepository;

@ManagedBean(name = "tipodefeito")
@SessionScoped
public class TipoDefeitoBean implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private String nome;
	
	private Integer nomeId;

	private String descricao;
	
	TipoDefeitoRepository repositorio;
	
	private List<TipoDefeito> tabelaDefeitos = new ArrayList<TipoDefeito>();
	
	private TipoDefeito defeito = new TipoDefeito();

	private Collection<SelectItem> defeitos;
	
	public String alteraForm(){
		
		repositorio = new TipoDefeitoRepository();
		
		defeito = repositorio.buscaPorId(nomeId);
		
		nome = defeito.getNome();
		descricao = defeito.getDescricao();
		
		repositorio = null;
		
		return "defeito-form-alt";
	}
	
	public String alteraAction(){
		repositorio = new TipoDefeitoRepository();
		
		defeito.setNome(nome);
		defeito.setDescricao(descricao);
		repositorio.altera(defeito);
		
		return "defeito-success";
	}
	
	public String salvaTipoDefeito() {
		repositorio = new TipoDefeitoRepository();

		TipoDefeito defeito = new TipoDefeito();
		defeito.setNome(nome);
		defeito.setDescricao(descricao);

		repositorio.adiciona(defeito);
		
		repositorio = null;

		return "defeito-success";
	}

	public String apagaTipoDefeito() {
		TipoDefeito defeito = new TipoDefeito();
		
		defeito = repositorio.buscaPorId(nomeId);
		
		repositorio.delete(defeito);

		return "defeito-success-rem";
	}

	public void setDefeitos(Collection<SelectItem> defeitos) {
		this.defeitos = defeitos;
	}

	public Collection<SelectItem> getDefeitos() {
		repositorio = new TipoDefeitoRepository();
		
		Collection<SelectItem> defeitosSelect = new ArrayList<SelectItem>();
		Collection<TipoDefeito> defeitos = repositorio.buscaTodos();
		for (TipoDefeito tipoDefeito : defeitos) {
			SelectItem select = new SelectItem();
			select.setLabel(tipoDefeito.getNome());
			select.setValue(tipoDefeito.getId());
			defeitosSelect.add(select);
		}

		return defeitosSelect;
	}
	
	// getters and setters
	
	public String getNome() {
		return nome;
	}

	public Integer getNomeId() {
		return nomeId;
	}

	public void setNomeId(Integer nomeId) {
		this.nomeId = nomeId;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public List<TipoDefeito> getTabelaDefeitos() {
		repositorio = new TipoDefeitoRepository();
		
		tabelaDefeitos = (List<TipoDefeito>) repositorio.buscaTodos();
		return tabelaDefeitos;
	}

	public void setTabelaDefeitos(List<TipoDefeito> tabelaDefeitos) {
		this.tabelaDefeitos = tabelaDefeitos;
	}

	
}
